<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guideline: 分析与设计中的重要决策 </title>
<meta name="uma.type" content="Guideline">
<meta name="uma.name" content="important_decisions_in_analysis_design">
<meta name="uma.presentationName" content="分析与设计中的重要决策 ">
<meta name="element_type" content="other">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="4.63625392176695E-305"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Guideline: 分析与设计中的重要决策 </td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/guidance.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">本指南为规划分析活动和设计活动提供路线图。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup/tasks/develop_development_case_B10E3391.html" guid="{F6999E01-701F-4D48-9E83-A063CB35912B}">Develop Development Case</a>
</li>
<li>
<a href="./../../../rup/disciplines/rup_analysis_design_discipline_29760231.html" guid="_ydt62NnmEdmO6L4XMImrsA">分析与设计</a>
</li>
<li>
<a href="./../../../rup/domains/analysis_and_design_BD3BBB1D.html" guid="_kjFBYN7HEdm8G6yT7-Wdqw">分析与设计</a>
</li>
<li>
<a href="./../../../rup/capabilitypatterns/analysis_design_49725AC4.html" guid="{002674F9-6511-4D15-8623-B761D8C48986}">分析与设计</a>
</li>
<li>
<a href="./../../../rup/tasks/tailor_process_for_project_6CFD05E2.html" guid="{1BA9AAA0-DA89-4C14-B45A-CE28A8A10894}">为项目定制开发流程</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><h3>
    <a id="Decide How to Use Artifacts" name="Decide How to Use Artifacts">决定如何使用工作产品</a>
</h3>
<p>
    决定要使用哪些工作产品以及如何使用每个工作产品。下表描述了必需的工作产品以及只在某些情况下使用的工作产品。 关于如何定制每个工作产品的更多详细信息，以及有关该特定工作产品的优缺点的讨论，请阅读每个工作产品的标题为“定制”的部分。
</p>
<p>
    对于每个工作产品，决定应如何使用工作产品：必须使用、应该使用、可以使用或不使用。关于更多详细信息，请参阅<a class="elementLinkWithUserText" href="./../../../rup/guidances/guidelines/classifying_work_products_4250A298.html" guid="7.27749388241665E-306">技术：将工作产品分类</a>。
</p>
<div align="center">
    <table     style="BORDER-RIGHT: rgb(128,128,128) 1px solid; BORDER-TOP: rgb(128,128,128) 1px solid; BORDER-LEFT: rgb(128,128,128) 1px solid; BORDER-BOTTOM: rgb(128,128,128) 1px solid"      cellspacing="0" bordercolordark="#808080" cellpadding="4" width="85%" bordercolorlight="#808080" border="1">
        <tbody>
            <tr>
                <th scope="col" width="20%">
                    <b>工作产品</b>
                </th>
                <th scope="col" width="40%">
                    <b>用途</b>
                </th>
                <th scope="col" width="40%">
                    <p>
                        <b>定制（可选，建议使用）</b>
                    </p>
                </th>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_analysis_model_76C3B70C.html" guid="{98EA224C-36F6-46E6-AB36-2999382B58B3}">分析模型</a>（<a class="elementLink" href="./../../../rup/workproducts/rup_analysis_class_DAF7CE03.html" guid="{1E20603F-A5B8-42D5-BDBC-69DCE9C0FCDB}">分析类</a>）
                </td>
                <td width="40%">
                    分析模型对于在做出设计决策之前更好地理解需求很有用。对于复杂系统，可以维护该模型以对系统进行概念性概述。
                </td>
                <td width="40%">
                    <p>
                        可选
                    </p>
                    <p>
                        在许多项目中，使用初始设计模型来代替分析模型。
                    </p>
                    <p>
                        在创建了分析模型的项目中，它通常是一个临时工件，将进化成设计模型。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <p>
                        <a class="elementLink" href="./../../../rup/workproducts/rup_navmap_73AF74E2.html" guid="{351D0945-8FD3-458D-B514-E25E3B445264}">导航图</a>，<a class="elementLink" href="./../../../rup/workproducts/rup_user_interface_prototype_7237E5AA.html" guid="{3DF10D00-8C80-4429-92B8-C6A221F0F90C}">用户界面原型</a>
                    </p>
                </td>
                <td width="40%">
                    带有大型和复杂用户界面的项目应考虑用户界面设计。
                </td>
                <td width="40%">
                    <p>
                        可选
                    </p>
                    <p>
                        对于较小的开发工作，不大正式的用户界面设计可能就足够了。
                    </p>
                </td>
            </tr>
            <tr class="reactive">
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_design_model_2830034D.html" guid="{8CDAEAD4-5E84-4F50-87FD-3240ED047DE7}">设计模型</a><br />
                    <br />
                </td>
                <td width="40%">
                    大多数系统，甚至是较小的系统，也应在实现之前进行设计，以避免由于设计错误而不得不进行代价高昂的返工。 可视化模型使得设计思路可以方便地传达。正向设计和反向设计的工具可确保与实现模型一致，并节省工作。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                    <p>
                        对于较小的项目，是否使用自动工具并不重要，但如果使用，则会在长时间内对生产率有好处。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_design_class_B33BD5E5.html" guid="{952A9CE9-D5A3-43AC-980D-0B9298F3872E}">设计类</a>；<a class="elementLink" href="./../../../rup/workproducts/rup_design_package_8376BC8E.html" guid="{80CC5437-F481-487B-A69B-957D9D236D8D}">设计包</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    类和包是任何面向对象设计的基本部件。面向对象设计是用于大多数项目的标准设计方法。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                    <p>
                        主要的定制问题是决定将使用哪些构造型（可以在设计指南中找到答案）。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <blockquote>
                        <p>
                            <a class="elementLinkWithUserText" href="./../../../rup/workproducts/rup_use_case_realization_E4F713BD.html" guid="{87EB094F-095B-4981-ACC3-319B3B298641}">用例实现</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    提供用例与设计之间的桥梁。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_interface_9816B54F.html" guid="{C6938487-1DAA-4F6A-B3BC-CB99165F0680}">接口</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    接口通常用来独立于实现行为的大粒度组件而定义该行为。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                    <p>
                        基于组件的设计正在成为标准设计方法。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%" height="96">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_design_subsystem_1A8D169B.html" guid="{A3C60B25-9780-4BFA-81AF-C1AD40D8A833}">设计子系统</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    设计子系统用来在提供接口的组件内封装行为。它用来包括类和／或其他子系统的交互。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                    <p>
                        子系统对于提升设计的抽象水平常常是有用的。它们使得系统更易于理解。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_event_741355DE.html" guid="{53AF0AB8-E1A1-45E7-8E4F-AFE2427633C6}">事件</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    对于响应许多外部事件的系统可能有用。
                </td>
                <td width="40%">
                    建议用于实时系统。
                </td>
            </tr>
            <tr>
                <td width="20%" height="49">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_protocol_BEB5FBE1.html" guid="{6E4F4D6F-2934-432C-9335-5537B795F67F}">协议</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    对于实时系统是必需的。
                </td>
                <td width="40%">
                    建议用于实时系统。
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_signal_AD16C912.html" guid="{8CA124DA-A80C-45D7-BC65-BA6B4247FF11}">信号</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    <p>
                        对于需要并行性且由事件推动的系统可能有用。
                    </p>
                    <p>
                        对于实时系统是必需的。
                    </p>
                </td>
                <td width="40%">
                    <p>
                        对于需要并行性且由事件推动的系统可能有用。
                    </p>
                    <p>
                        建议用于实时系统。
                    </p>
                </td>
            </tr>
            <tr class="reactive">
                <td width="20%">
                    <blockquote>
                        <p>
                            <a class="elementLink" href="./../../../rup/workproducts/rup_capsule_FC4A34FD.html" guid="{4423FCE1-FF59-4C8E-A6C4-AA4B13CB3250}">封装体</a>
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    用于实时系统，但也可以用于任何具有高度并行性的系统的建模和设计。
                </td>
                <td width="40%">
                    <p>
                        建议用于实时系统。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_data_model_65B46980.html" guid="{9DCF1723-1A21-4F48-BEDE-DBC543489682}">数据模型</a>
                </td>
                <td width="40%">
                    用来描述永久信息的逻辑结构和可能的实际结构。
                </td>
                <td width="40%">
                    <p>
                        建议用于使用数据库的项目。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_deployment_model_57DF1DF5.html" guid="{5981B6BE-2FD1-4984-AA94-2F7428439BA6}">部署模型</a>
                </td>
                <td width="40%">
                    显示运行时处理节点的配置、节点之间的通信链路以及驻留在节点上的组件实例和对象。
                </td>
                <td width="40%">
                    <p>
                        可选。
                    </p>
                    <p>
                        许多系统具有多个处理节点，因此需要处理部署模型。不过，它可以作为软件架构文档的一部分而包括在内，而不需要作为单独标识的工件存在。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_architectural_proof_of_concept_9AF95095.html" guid="{198EA2A5-4FBA-45D5-85BA-53B108728534}">架构概念验证</a>
                </td>
                <td width="40%">
                    用来确定是否存在某个解决方案，该解决方案满足具有重要架构意义的需求。
                </td>
                <td width="40%">
                    建议大多数项目使用。 
                    <p>
                        许多项目将使用架构概念验证来确定需求的可行性。它可以采取多种形式，例如：
                    </p>
                    <ul>
                        <li>
                            似乎适用于解决方案的一系列已知技术
                        </li>
                        <li>
                            解决方案的概念模型草图
                        </li>
                        <li>
                            解决方案的模拟
                        </li>
                        <li>
                            可执行原型。
                        </li>
                    </ul>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_reference_architecture_13D031C0.html" guid="{855CE09A-D297-4373-BEEA-D38B8AB348DA}">参考架构</a>
                </td>
                <td width="40%">
                    参考架构通过重用经证明的解决方案来加快开发速度和减少风险。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                    <p>
                        如果存在合适的参考架构材料，则可以显著加快开发速度和减少风险。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLinkWithUserText" href="./../../../rup/workproducts/rup_software_architecture_document_C367485C.html" guid="{6F49641A-ED10-47B5-9E5D-3F90A6BF3006}">软件架构文档（SAD）</a>
                </td>
                <td width="40%">
                    软件架构文档用来对系统进行综合的架构概述。此概述有助于理解系统，以及记录主要架构决策。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                    <p>
                        软件架构的高级概述对于除规模最小的系统之外的所有系统都有用。与较小型项目相比，复杂系统通常要求更高的详细程度和更多的观察。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLink" href="./../../../rup/workproducts/rup_user_interface_prototype_7237E5AA.html" guid="{3DF10D00-8C80-4429-92B8-C6A221F0F90C}">用户界面原型</a>
                </td>
                <td width="40%">
                    用来在真正的开发工作开始之前展示并测试功能和可用性。它是用来验证设计的有效方法，可防止浪费过多时间。
                </td>
                <td width="40%">
                    <p>
                        建议大多数项目使用。
                    </p>
                </td>
            </tr>
        </tbody>
    </table><br />
</div>
<p>
    根据项目的需要定制每个工作产品。关于定制注意事项，请参阅工作产品的描述页的定制部分，或<a class="elementLinkWithType" href="./../../../rup/tasks/develop_development_case_B10E3391.html" guid="{F6999E01-701F-4D48-9E83-A063CB35912B}">Task: Develop Development Case</a>中的标题“按照规程定制工作产品”下描述的步骤。
</p>
<h3>
    <a id="Decide Which Reports to Use" name="Decide Which Reports to Use">决定使用哪些报告</a>
</h3>
<p>
    决定要使用哪些报告，这将取决于可供项目使用的报告工具。如果报告生成工具可用，则建议为面向模型工作产品（例如设计类和用例实现）生成报告。NUP 配置中的现有报告在工作产品描述页面中提供，或按照树形浏览器中的相关工作产品分组。
</p>
<h3>
    <a id="Decide How to Review" name="Decide How to Review">决定如何评审</a>
</h3>
<p>
    决定每个工件的评审级别，并将其记录在开发案例中（如果有开发案例）。 关于详细信息，请参阅<a class="elementLinkWithType" href="./../../../rup/guidances/guidelines/review_levels_72ACB304.html" guid="8.546224914239529E-306">Guideline: 评审级别</a>。决定如何评审和核准“分析与设计”的结果，并决定对结果进行何种程度的评审。
</p>
<p>
    设计评审的优点有：
</p>
<ul>
    <li>
        它检测在测试时不可能或者很难检测到的问题。例如风格问题和布局。&nbsp;
    </li>
    <li>
        它是一种强制采用公共建模风格的方法，并使个人有机会相互学习。&nbsp;
    </li>
    <li>
        它检测在项目现阶段的测试期间检测不到的那些缺陷。
    </li>
</ul>
<p>
    设计评审的缺点有：
</p>
<ul>
    <li>
        它会耗费时间和资源。&nbsp;
    </li>
    <li>
        如果管理不当，则很容易被误用。
    </li>
</ul>
<p>
    可以改变的因素有评审技术、资源和范围。下面是关于您能决定在项目中采取什么行动的一些示例：
</p>
<ul>
    <li>
        决定对子系统的本地更改只由一名同事进行评审，该同事开展检查并以书面形式提交结果。
    </li>
    <li>
        决定设计的哪些部分根本不会进行评审；例如，只为每名项目成员评审某些类，并希望这可以确保该风格的质量与结果的剩余部分类似。
    </li>
    <li>
        决定软件架构文档将在单独的会议期间由客户评审。
    </li>
    <li>
        决定对重要接口的变更使用正式的评审会议，重要接口即指影响多名项目成员工作的接口。
    </li>
</ul>
<p>
    关于评审及不同类型的评审的更多信息，请参阅<a class="elementLinkWithType" href="./../../../rup/guidances/guidelines/reviews_9FA4EDE.html" guid="2.981757544469536E-306">Guideline: 评审</a>。
</p>
<h3>
    <a id="Decide Whether to Generate Code" name="Decide Whether to Generate Code">决定是否生成代码</a>
</h3>
<p>
    您的设计方式会根据是否从设计模型生成代码而有所不同。如果生成代码，那么设计就需要非常详细。 另一方面，如果不从设计生成代码，则设计中没必要非常详细。相反，设计中的细节必须手动地与代码同步。
</p><br />
<br /></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
